package com.aiwei.tdjk.service;

import com.aiwei.tdjk.entity.Organization;

import java.util.List;
import java.util.Set;

/**
 * Created by yanfeng on 2016/12/13.
 */
public interface OrganizationService {
    /**
     * 获取祖先节点
     * @param currentIds
     * @return
     */
    Set<Long> findAncestorIds(Iterable<Long> currentIds);

    /**
     * 获取祖先节点
     * @param currentId
     * @return
     */
    Set<Long> findAncestorIds(Long currentId);

    /**
     * 过滤仅获取可显示的数据
     *
     * @param organizationIds
     * @param organizationJobIds
     */
    void filterForCanShow(Set<Long> organizationIds, Set<Long[]> organizationJobIds) ;

    /**
     * 新增子节点
     * @param parentId
     * @param child
     */
    void appendChild(long parentId,Organization child);

    /**
     * 删除节点
     * @param id
     */
    void delete(long id);


    void deleteSelfAndChild(long id,String makeSelfAsNewParentIds);

    /**
     * 根据主键id获取元素
     * @param id
     * @return
     */
    Organization get(long id);

    /**
     * 更新节点
      * @param organization
     */
    void update(Organization organization);

    /**
     * 查询all组织机构
     * @return
     */
    List<Organization> findAllWithSort(boolean isShow);

    /**
     * 根据名称模糊查询组织机构
     * @param name
     * @return
     */
    List<Organization> findAllByName(String name);


    /**
     * 根据查询组织机构的下级机构
     * @param models
     * @return
     */
    List<Organization> findChildren(List<Organization> models);
    /**
     * 修改子节点状态
     * @param parentIds
     * @return
     */
    void updateChildIsShow(boolean isShow,String parentIds);








}
